Direct Sequence Spread Spectrum (DSSS) encoding is a transmission technique in which a Pseudo Noise (PN) code is used as a modulation waveform to “spread” signal energy over a bandwidth much greater than the signal information bandwidth. At a receiver, the signal is “dispread” using a synchronized replica of the pseudo-noise code. The PN codes are a sequence of binary numbers called ‘chips’ having strong auto and cross correlation properties.
Frequency Hopping Spread Systems typically use 64 bit chip PN-codes to synchronize data streams. DSSS systems, such as the ones used with wireless Universal Serial Bus (USB) products, typically use 64 or 32 chip PN-Codes.
Referring to FIG. 1, a receiver in a spread spectrum system correlates a received spread spectrum RF data stream 12 against known PN-Codes in order to extract data values. The receiver looks for PN-code matches and PN-code mismatches. A match for a sample of PN-Code 14 equals a value of ‘1’ and a match of an inverse sample of the PN-Code 16 equals a value of ‘0’.
A counter in the receiver determines when there is a PN-code match or mismatch. The counter maintains a match count 25 for the number of chips in the reference PN-code that match samples of the encoded data stream 12. When the chip match count 26 reaches an upper threshold 20, the receiver generates a data value of ‘1’. When the chip match count 28 reaches a lower threshold 22, the receiver generates a data value of ‘0’. The spread spectrum correlator has a high correlation characteristic, meaning that a large abrupt spike 26 or 28 in the match count occurs when the receiver detects PN-Codes in the encoded data stream 12.
FIG. 2 shows one example of a Spread Spectrum (SS) transmitter in further detail. The SS transmitter includes multiple flip-flops 30 that store the chips for the PN-code. The PN-code stored in the flip-flops 30 is fed into a multiplexer (mux) 32. This example shows a 64 chip PN-code with the mux 32 having one input for each PN-code chip. A counter 35 is used for controlling when the PN-code chips are output from mux 32. The counter repeatedly counts up from 0 to 63 sequentially outputting 1 chip from each of the sixty-four flip-flops 30.
An exclusive-OR gate 36 encodes transmit data 34 with the PN-codes output from the mux 32. For a data bit value of ‘1’ for example, the chips for the 64 bit PN-code are output unchanged from exclusive-OR gate 36. For a transmit data value of ‘0’, the exclusive-OR gate 36 inverts each chip of the 64 bit PN-code. The output of exclusive-OR gate 36 is buffered by a flip-flop 38 and then output as the PN-encoded transmit data stream 12 previously shown in FIG. 1.
FIG. 3 shows in more detail one example of a spread spectrum correlator. Multiple flip-flops 40 are used to sample the PN-encoded transmit data stream 12. A sample clock (not shown) causes the flip-flops 40 to sequentially sample the received data stream 12. An exclusive-OR circuit 42 compares the data latched by flip-flops 40 with a reference PN-code stored in flip-flops 44. The exclusive-OR circuit 42 generates a logic ‘1’ value for the chips in the reference PN-code that match samples of the PN-encoded data stream 12 latched by flip-flops 40. The exclusive-OR circuit 42 generates logic ‘0’ values for the reference PN-code chips that do not match the samples latched in flip-flops 40.
For each clock period, another sample of the PN-encoded data stream 12 is latched into the flip-flops 40. For each clock period, a parallel 64-bit counter 46 counts the number of logic 1's and logic 0's output by the exclusive-OR circuit 42. When the number of logic 1 values reach the upper threshold 20 shown in FIG. 1, the counter 46 generates a data value of 1 from output 47. When the number of logic 0 values reaches the lower threshold 22 shown in FIG. 1, the counter 46 generates a data value of 0 on output 47.
Spread spectrum systems as described above have improved noise interference robustness and processing gain that allows longer range and better quality of service. However, these spread spectrum systems provide these improvements at the cost of a substantial reduction in bandwidth. For example, 64 chips have to be generated and processed to transmit one data bit of information. Thus, for a system with a 1 million chips per second (mcps) bandwidth and a code length of 64 chips, the effective data rate is 16 thousand bits per second (kbps).
One way to increase the spread spectrum data rate is to increase the number of PN-codes used to encode the data stream. However, each additional PN-code used to encode the data exponentially increases the complexity of the hardware. Further, the correlation described all bits of all PN codes need to be compared before a match count can be made. So the added logic for handling multiple PN codes is particularly complex for the receive process.